package com.wl.mapper;

import com.wl.pojo.Comments;
import com.wl.pojo.model.CommentManagement;
import com.wl.pojo.model.CommentModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @program: treeHole
 * @author: 吴磊
 * @create: 2021-07-06 18:13
 */
public interface CommentsMapper {


    /**
     * 根据文章Id删除评论
     *
     * @param articleId
     * @return
     */
    Integer deleteCommentByArticleId(@Param("articleId") String articleId);

    List<CommentManagement> getAllComments(@Param("start") int start);

    /**
     * 获取所有评论数
     *
     * @return
     */
    Integer getAllCommentsCount();


    /**
     * 获取自己的所有评论
     *
     * @param userId
     * @param curPage
     * @return
     */
    List<CommentManagement> getOwnerComment(@Param("userId") String userId, @Param("curPage") Integer curPage);

    /**
     * 通过用户Id获取自己所有的评论数量
     *
     * @param userId
     * @return
     */
    Integer getOwnerCommentCount(@Param("userId") String userId);


    /**
     * 通过用户自己的id查询自己文章下面的全部信息
     *
     * @param userId
     * @param curPage
     * @return
     */
    List<CommentManagement> getCommentManagementByUserId(@Param("userId") String userId, @Param("curPage") Integer curPage);

    /**
     * 通过用户Id获取评论总数
     *
     * @param userId
     * @return
     */
    Integer getCountByUserId(@Param("userId") String userId);


    /**
     * 插入评论
     *
     * @param comments
     * @return
     */
    Integer insert(Comments comments);

    /**
     * 通过文章Id获取所有的一级评论
     *
     * @param articleId
     * @return
     */
    List<CommentModel> getCommentsByArticleIdAndParentCommentIdIsNull(@Param("articleId") String articleId);

    /**
     * 通过父评论Id查询子评论
     *
     * @param parentCommentId
     * @return
     */
    List<CommentModel> getCommentByParentId(@Param("parentCommentId") String parentCommentId);

    /**
     * 通过评论Id获取评论详情
     *
     * @param commentId
     * @return
     */
    Comments getCommentsByCommentId(@Param("commentId") String commentId);


    /**
     * 根据评论ID获取文章Id
     *
     * @param commentId
     * @return
     */
    String getArticleIdByCommentId(@Param("commentId") String commentId);

    /**
     * 根据评论Id集合删除评论
     *
     * @param commentIdList
     * @return
     */
    Integer deleteCommentsByIdList(List<String> commentIdList);
}
